54. 螺旋矩阵
54. 螺旋矩阵
func spiralOrder(matrix [][]int) []int {
ret := []int{}
if len(matrix) == 0 {
return ret
}
left:=0
right:=len(matrix[0])-1
top:=0
bottom:=len(matrix)-1
for {
for j:=left;j<=right;j++ {
ret = append(ret, matrix[top][j])
}
top++
if top > bottom {
break
}
for i:=top; i <= bottom;i++ {
ret = append(ret, matrix[i][right])
}
right--
if right < left {
break
}
for j:=right;j >= left;j-- {
ret = append(ret, matrix[bottom][j])
}
bottom--
if bottom < top {
break
}
for i := bottom;i >= top;i-- {
ret = append(ret, matrix[i][left])
}
left++
if left > right {
break
}
}
return ret
}
看了题解,基本就是两种做法,一种是限制左右上下四个边界的数值,达到在各个方向移动时不超过限制
另外一种是dfs,设置四个遍历方向,循环往复,直到所有的块被遍历完全
本站总访问量次 本站访客数人次 本文总阅读量次